﻿Imports System.IO

Public Interface IScanner
    ReadOnly Property CurrentLocation() As Location
    Function Read() As IToken
    Function Peek() As IToken
    Function PeekAhead() As IToken
End Interface

Public Interface ISeekableScanner
    Inherits IScanner

    Sub Seek(ByVal previousToken As IToken)
End Interface

Public Interface IToken
    ReadOnly Property Span() As SourceSpan
    ReadOnly Property Terminal() As Terminal
    ReadOnly Property IsEndOfFile() As Boolean
End Interface